太陽從客戶辦公室,走出去後,站到大馬路上...這一天的陽光很強...太陽抬起頭,看了看從天上落下來的陽光...他的嘴角微微笑了笑...
十分鐘後,太陽回來了。on哥看太陽一臉疲憊的樣子,也不知該說什麼...太陽坐下來後,揉了揉眼睛,手指著自己筆電的螢幕。
『這一串SQL語法,是有點長...但基本該有的都有了。我們拆開來看吧。因為實際儲存在TSM DB裏的資訊,都是分散在不同Table的。如果業主要在一張報表裏,看到分散在不同Table的資料時,那SQL語法就會變的很長...像這個範例,就是從events和summary這兩個資料表中取出的。』
select a.NODE_NAME, a.SCHEDULE_NAME, a.STATUS, a.RESULT, to_char(a.ACTUAL_START, 'yyyy-mm-dd hh24:mi:ss') AS Start_Time, to_char(a.COMPLETED, 'yyyy-mm-dd hh24:mi:ss') AS End_Time, CAST(FLOAT(SUM(b.bytes)) / 1024 / 1024 / 1024 AS DECIMAL(8,2)) as Backup_GB, '' as ErrorReason, '' as CheckProcess, '' as ServerOwner, '' as OP from events a, summary b where ( b.activity='ARCHIVE' OR b.activity='BACKUP' OR b.activity='EXPIRATION') and (a.Scheduled_start between '%s' and '%s' ) And (a.status = 'Completed' and node_name is not null ) and ( a.node_name = b.entity ) group by a.NODE_NAME, a.SCHEDULE_NAME, a.STATUS, a.RESULT, to_char(a.ACTUAL_START, 'yyyy-mm-dd hh24:mi:ss'), to_char(a.COMPLETED, 'yyyy-mm-dd hh24:mi:ss') order by a.node_name
「哦...然後呢? 這一串是什麼? CAST(FLOAT(SUM(b.bytes)) / 1024 / 1024 / 1024 AS DECIMAL(8,2)) as Backup_GB」
『這一串就是...經過換算後,顯示在報表裏面的備份容量單位會是GB 而不是 bytes。』
「哇! 還要換算哦! 那這個呢? a.ACTUAL_START, 'yyyy-mm-dd hh24:mi:ss'」
『TSM的資料庫是DB2,'yyyy-mm-dd hh24:mi:ss'是DB2的日期轉換格式,從資料庫中取出來的資料,會照這個格式顯示,就是你看到報表上的呈現,就像這樣。』
太陽說完後,開啟了一個報表檔,並指著報表檔和on哥說『你對照看看,有沒有什麼問題!』
「好像沒有,我還要自己試試看,現在看沒有。」
『哦,那就繼續看別的語法。』
『這三個都算是基本的。』
「了解...只要用Select就可以囉!?」
『是啊,如果只是做報表,只要用Select就行了。』
「那...跟你說的Shell Script有什麼關係!?」
『當然有關係!』
太陽說著說著,叫出了一個畫面...『這是我寫的TSM自動進退帶ShellScript,你看一下這上面寫的。比如:檢查外儲(Copy Storage Pool)磁帶總數...你在這個ShellScript裏,按下數字鍵「1」,它就會顯示外儲(copy Storage Pool)裏,有多少卷磁帶,請問...該怎麼寫這個功能?』
「這個...用q volume stg=copy Storage Pool name,然後一卷一卷算...」
『不行啊,我們老闆答應人家,要送這個ShellScript功能...然後,業主加碼,要全自動! 怎麼可能慢慢算...』
「了解,那怎麼辦?」
『唉...我再休息一下,待會再和你說要怎麼做吧!』
太陽從客戶辦公室,走出去後,站到大馬路上...這一天的陽光很強...太陽抬起頭,看了看從天上落下來的陽光...他的嘴角微微笑了笑...
『爺爺,您好嗎?』
(待)
2013/10/18 SunAllen